package gui;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JButton;

import classes.Endereco;
import classes.Funcionario;
import classes.RepositorioFuncionario;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class CadastrarFuncionario extends JPanel {
        private JTextField textNomeFuncionario;
        private JTextField textRegistroCpfFuncionario;
        private JTextField textDataNascimentoFuncionario;
        private JTextField textTelefoneContatoFuncionario;
        private JTextField textNomeUsuarioFuncionario;
        private JTextField textSenhaFuncionario;
        private JTextField textRuaFuncionario;
        private JTextField textBairroFuncionario;
        private JTextField textCidadeFuncionario;
        private JTextField textNumeroFuncionario;
        private JTextField textCepFuncionario;
        
        private static CadastrarFuncionario instance;

        private void limparCampos(){
    		
    		textNomeFuncionario.setText("");
    		textRegistroCpfFuncionario.setText("");
    		textDataNascimentoFuncionario.setText("");
    		textTelefoneContatoFuncionario.setText("");
    		textNomeUsuarioFuncionario.setText("");
    		textRuaFuncionario.setText("");
    		textBairroFuncionario.setText("");
    		textCidadeFuncionario.setText("");
    		textNumeroFuncionario.setText("");
    		textSenhaFuncionario.setText("");
    		textCepFuncionario.setText("");
    		
    		}
        
        
        public static CadastrarFuncionario getInstance(){
                
                if(instance == null){
                        instance = new CadastrarFuncionario();
                }
                
                return instance;
                
        }
        
        public CadastrarFuncionario() {
                setLayout(null);
                
                textNomeFuncionario = new JTextField();
                textNomeFuncionario.setBounds(179, 141, 233, 20);
                add(textNomeFuncionario);
                textNomeFuncionario.setColumns(10);
                
                textRegistroCpfFuncionario = new JTextField();
                textRegistroCpfFuncionario.setColumns(10);
                textRegistroCpfFuncionario.setBounds(179, 172, 169, 20);
                add(textRegistroCpfFuncionario);
                
                textDataNascimentoFuncionario = new JTextField();
                textDataNascimentoFuncionario.setColumns(10);
                textDataNascimentoFuncionario.setBounds(179, 203, 169, 20);
                add(textDataNascimentoFuncionario);
                
                JLabel nomeFuncionario = new JLabel("Nome");
                nomeFuncionario.setFont(new Font("Arial", Font.PLAIN, 14));
                nomeFuncionario.setBounds(10, 141, 66, 14);
                add(nomeFuncionario);
                
                JLabel cadastroFuncionario = new JLabel("Cadastrar Funcionário");
                cadastroFuncionario.setFont(new Font("Arial", Font.PLAIN, 20));
                cadastroFuncionario.setBounds(10, 11, 240, 20);
                add(cadastroFuncionario);
                
                JLabel registroCpfFuncionario = new JLabel("Número Registro/CPF");
                registroCpfFuncionario.setFont(new Font("Arial", Font.PLAIN, 14));
                registroCpfFuncionario.setBounds(10, 174, 159, 14);
                add(registroCpfFuncionario);
                
                JLabel dataNascimentoFuncionario = new JLabel("Data de Nascimento");
                dataNascimentoFuncionario.setFont(new Font("Arial", Font.PLAIN, 14));
                dataNascimentoFuncionario.setBounds(10, 205, 136, 14);
                add(dataNascimentoFuncionario);
                
                JLabel telefoneContatoFuncionario = new JLabel("Telefone para Contato");
                telefoneContatoFuncionario.setFont(new Font("Arial", Font.PLAIN, 14));
                telefoneContatoFuncionario.setBounds(10, 241, 159, 14);
                add(telefoneContatoFuncionario);
                
                JLabel nomeUsuarioFuncionario = new JLabel("Nome de Usuário");
                nomeUsuarioFuncionario.setFont(new Font("Arial", Font.PLAIN, 14));
                nomeUsuarioFuncionario.setBounds(10, 270, 117, 14);
                add(nomeUsuarioFuncionario);
                
                textTelefoneContatoFuncionario = new JTextField();
                textTelefoneContatoFuncionario.setColumns(10);
                textTelefoneContatoFuncionario.setBounds(179, 239, 169, 20);
                add(textTelefoneContatoFuncionario);
                
                textNomeUsuarioFuncionario = new JTextField();
                textNomeUsuarioFuncionario.setColumns(10);
                textNomeUsuarioFuncionario.setBounds(179, 268, 169, 20);
                add(textNomeUsuarioFuncionario);
                
                JLabel label_2 = new JLabel("Dados de Acesso");
                label_2.setFont(new Font("Arial", Font.BOLD, 15));
                label_2.setBounds(10, 98, 141, 25);
                add(label_2);
                
                JLabel senhaFuncionario = new JLabel("Senha");
                senhaFuncionario.setFont(new Font("Arial", Font.PLAIN, 14));
                senhaFuncionario.setBounds(10, 303, 117, 14);
                add(senhaFuncionario);
                
                textSenhaFuncionario = new JTextField();
                textSenhaFuncionario.setColumns(10);
                textSenhaFuncionario.setBounds(179, 299, 169, 20);
                add(textSenhaFuncionario);
                
                JLabel label = new JLabel("Endereço Completo");
                label.setFont(new Font("Arial", Font.BOLD, 15));
                label.setBounds(459, 98, 141, 25);
                add(label);
                
                JLabel ruaFuncionario = new JLabel("Rua");
                ruaFuncionario.setFont(new Font("Arial", Font.PLAIN, 14));
                ruaFuncionario.setBounds(459, 138, 58, 25);
                add(ruaFuncionario);
                
                JLabel bairroFuncionario = new JLabel("Bairro");
                bairroFuncionario.setFont(new Font("Arial", Font.PLAIN, 14));
                bairroFuncionario.setBounds(459, 167, 58, 25);
                add(bairroFuncionario);
                
                JLabel cidadeFuncionario = new JLabel("Cidade");
                cidadeFuncionario.setFont(new Font("Arial", Font.PLAIN, 14));
                cidadeFuncionario.setBounds(459, 203, 58, 25);
                add(cidadeFuncionario);
                
                JLabel numeroFuncionario = new JLabel("Número");
                numeroFuncionario.setFont(new Font("Arial", Font.PLAIN, 14));
                numeroFuncionario.setBounds(459, 239, 58, 25);
                add(numeroFuncionario);
                
                JLabel cepFuncionario = new JLabel("CEP");
                cepFuncionario.setFont(new Font("Arial", Font.PLAIN, 14));
                cepFuncionario.setBounds(459, 271, 58, 25);
                add(cepFuncionario);
                
                textRuaFuncionario = new JTextField();
                textRuaFuncionario.setColumns(10);
                textRuaFuncionario.setBounds(571, 141, 169, 20);
                add(textRuaFuncionario);
                
                textBairroFuncionario = new JTextField();
                textBairroFuncionario.setColumns(10);
                textBairroFuncionario.setBounds(571, 172, 141, 20);
                add(textBairroFuncionario);
                
                textCidadeFuncionario = new JTextField();
                textCidadeFuncionario.setColumns(10);
                textCidadeFuncionario.setBounds(571, 203, 141, 20);
                add(textCidadeFuncionario);
                
                textNumeroFuncionario = new JTextField();
                textNumeroFuncionario.setColumns(10);
                textNumeroFuncionario.setBounds(571, 239, 141, 20);
                add(textNumeroFuncionario);
                
                textCepFuncionario = new JTextField();
                textCepFuncionario.setColumns(10);
                textCepFuncionario.setBounds(571, 274, 141, 20);
                add(textCepFuncionario);
                
                JButton button = new JButton("");
                button.setBounds(717, 349, -27, 46);
                add(button);
                
                JButton btnCancelar = new JButton("Cancelar");
                btnCancelar.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                
                                setVisible(false);
                        }
                });
                btnCancelar.setBounds(665, 401, 89, 23);
                add(btnCancelar);
                
                JButton btnOk = new JButton("Confirmar");
                btnOk.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent arg0) {
                                
                                String rua = textRuaFuncionario.getText();
                                String bairro = textBairroFuncionario.getText();
                                String cidade = textCidadeFuncionario.getText();
                                String numero = textNumeroFuncionario.getText();
                                String cep = textCepFuncionario.getText();
                                
                                String nome = textNomeFuncionario.getText();
                                String registroCpf = textRegistroCpfFuncionario.getText();
                                String dataNascimento = textDataNascimentoFuncionario.getText();
                                String telefone = textTelefoneContatoFuncionario.getText();
                                String usuario = textNomeUsuarioFuncionario.getText();
                                String senha = textSenhaFuncionario.getText();
                                
                                Endereco endereco= new Endereco(rua, bairro, cidade, numero, cep);
                                Funcionario novoFuncionario = new Funcionario(nome, registroCpf, dataNascimento, telefone, usuario, senha, endereco);
                                
                                RepositorioFuncionario.getInstancia().cadastrar(novoFuncionario);
                                JOptionPane.showMessageDialog(null, "O Funcionário foi cadastrado com sucesso!");
                                limparCampos();
                                
                        }
                });
                btnOk.setBounds(530, 401, 113, 23);
                add(btnOk);

        }
}